
#ifndef COLOR_H
#define COLOR_H

// INCLUDES ********************************************************************

#include <CoreFoundation/CoreFoundation.h>

#include <mach/mach_time.h>

// FORWARD DECLARATIONS ********************************************************

// *****************************************************************************

//! Color
//! 
//! Struct representing a RGBA color

// *****************************************************************************

namespace Meteor 
{
    class Color
    {
        public:
            Color( const float r = 1.0f, const float g = 1.0f,
                   const float b = 1.0f, const float a = 1.0f);
            
            ~Color();
            
            Color( const Color& rhs);
            
            Color& operator=( const Color& rhs);
                    
            //! setter
            void SetRed( const float value);
            void SetRed( const uint8_t value);
            
            void SetGreen( const float value);
            void SetGreen( const uint8_t value);
                
            void SetBlue( const float value);
            void SetBlue( const uint8_t value);
            
            void SetAlpha( const float value);
            void SetAlpha( const uint8_t value);
            
            //! getter
            const float Red() const;
            
            const float Green() const;
            
            const float Blue() const;
            
            const float Alpha() const;
    
        private:
            Color();
        
            //! RGBA values
            float mRed;
            float mGreen;
            float mBlue;
            float mAlpha;
    
    }; // end of class Color

} // end of namespace Meteor

#endif
